package com.seckill.service;

import java.util.List;

import com.seckill.dto.Exposer;
import com.seckill.dto.SeckillExecution;
import com.seckill.entity.Seckill;
import com.seckill.exception.RepeatKillException;
import com.seckill.exception.SeckillCloseException;
import com.seckill.exception.SeckillException;

/**
 * 
 * <p>Title: SeckillService</p>
 * <p>Description: </p>
 * @author zhuky
 * @date 2017年10月26日 上午9:42:47
 */
public interface SeckillService {
	/**
	 * 获取秒杀列表
	 * @return
	 */
	List<Seckill> getSeckillList();
	/**
	 * 获取秒杀
	 * @param seckillId
	 * @return
	 */
	Seckill getById(long seckillId);
	/**
	 * 当秒杀开始时输出秒杀地址，否则输出系统时间，和秒杀时间
	 * @param seckillId
	 * @return
	 */
	Exposer exportSeckillUrl(long seckillId);
	
	/**
	 * 执行秒杀
	 * @param seckillId
	 * @param phone
	 * @param md5
	 */
	
	SeckillExecution executeSeckill(long seckillId, long phone , String md5) throws RepeatKillException,SeckillCloseException,SeckillException;


	/**
	 * 执行秒杀 存储过程
	 * @param seckillId
	 * @param phone
	 * @param md5
	 */
	SeckillExecution executeSeckillProcedure(long seckillId, long phone , String md5) ;

}
